Repository navigation
fix(cli): report skipped doc generators in every meta gen output form - #428
Merged
Merged
Conversation
Member
Author
|
Validation took 2 no-mistakes runs. Run 1 passed the configured test command and then failed in the test step when the pipeline's test agent hit a provider error; that was not a code failure. Run 2 passed on the same change plus the review fix round and the CHANGELOG move under 1.1.0. The forge CI step was skipped for this run, so the validation is the local pipeline result. |
…ery output form ADR-0025 made `meta docs` the door for documentation, so `meta gen` warns about and skips a docsFile() or apiDocsFile() listed under `generators`. The skip is right; the signal was not reaching every reader. - meta gen --format json|toon (the default on a pipe) printed the runner's warnings to stderr only, and the result's `warnings` carried unknown-attribute findings alone. `warnings[]` now carries every warning the run printed: all of the runner's, a generator's ctx.warn, the runtime-boundary advisory, and the stale-agent-context and ignored-manifest advisories. `help[]` gains a `meta docs` next step when a doc generator was skipped. - A config wiring only doc generators was told "no entities to generate" and to author entities. The summary, next step and text line name the real reason. - meta gen --list printed no note on any row (the registry notes stopped being rendered when the catalog was rewritten) and presented api-docs as a generator to wire. The api-docs and docs rows now say they are run by `meta docs`, a wired one reads as skipped, and --probe gives them no file count. The JSON row carries `note` and `door`. - meta verify reports the wiring as an advisory row, rule doc-generator-in-gen. - The unknown-generator error no longer offers api-docs. mermaid-er is stated everywhere as what it is: a generator `meta gen` runs. `meta docs` has never run it; it draws the ER diagram on its overview page, while mermaidErDiagram() writes the same diagram as a file of its own, which only `meta gen` writes. The catalog note said "surfaced via meta docs" and the stable name was refused in `generators` as "neutral (owned by 'meta docs')" while the factory wired beside it ran. The note now names the command that runs it, and `generators: ["mermaid-er"]` resolves. `"docs"` is still refused. One definition of what the runner skips (packaged-docs-generators.ts) is read by the runner, resolveGenerators and the catalog. runGen() returns skippedDocGenerators beside warnings, so a caller decides from the fact instead of matching a sentence. TypeScript only: the C#, Java, Kotlin and Python ports register no doc generator for code generation, so there is nothing to wire and nothing to skip.
… as refused Assisted-by: no-mistakes:claude:claude-opus-5-5
1.1.0 has not shipped, so the entry belongs in its Fixed list, not under Unreleased.
dmealing
force-pushed
the
fm/mo-1-1-0-docs-door-signals
branch
from
October 11, 2026 18:05
1206180 to
f7b8430
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What Changed
meta gen --format json|toonnow carries every warning the run prints inwarnings[], not only unknown-attribute findings. A skippeddocsFile()orapiDocsFile()adds ameta docsnext step tohelp[].runGen()returns a newskippedDocGeneratorslist, and@metaobjectsdev/codegen-tsexportsisPackagedDocsGeneratorandisNeutralGeneratorName. Shared doc-generator definitions live in a newcodegen-tsmodule,packaged-docs-generators.ts, which the runner and the CLI catalog both read.meta gen --listmarks theapi-docsanddocsrows as run bymeta docs, with a note under the row. A wired row readsWIRED but skipped by meta gen.--probereports no count for these rows. The JSON form addsnoteanddoorto each row. The unknown-generator error no longer listsapi-docs.meta verifyadds an advisory row for each doc generator listed undergenerators(ruledoc-generator-in-gen, ordoc-generator-refused-by-genfor a neutral name given as a string). Exit code is unchanged. Addsdoc-generator-advisory.tsin the CLI lib.Runs: 1 (no gate runs yet on this branch)
Validation
Risk Assessment
✅ Low: Both intent gaps are closed (runner warnings reach json/toon
warnings[]; theapi-docsrow namesmeta docsas its door), both round-1 decisions are honoured (mermaid-er refusal and deprecation wording restored, refused strings reported as refused), the additions are advisory or additive with no exit-code change, and the only defect found is one mislabelled warning for a string-wiredapi-docs.Testing
I built disposable projects and drove the real
metaCLI (bun bin/meta.ts) against them. The runner's skip warning forapiDocsFile()anddocsFile()now appears inwarnings[]for bothjsonandtoon, with ameta docshint inhelp. A mixed["entity", apiDocsFile()]config still generatesTalk.tsand records the warning. A clean config produces nowarningskey, so there are no false positives.meta gen --listmarksapi-docsas run bymeta docs, and as "WIRED but skipped bymeta gen" when wired.meta verifyreports the newdoc-generator-in-genadvisory without failing the gate. A string-wired"docs"is reported as refused bymeta gen(exit 1) rather than skipped, matching the recorded decision."mermaid-er"as a string is refused as neutral, and its catalog note says it is deprecated. A constructedmermaidErDiagram()still runs.meta docsstill writes its pages. The full regression (ci-local.sh --quick) passed. The C#, Java, Python and Kotlin lanes, the Java reactor, the Docker integration tests and the Cube live check were skipped by--quick; the change touches only TypeScript and docs. One cosmetic nit: a string-wired"api-docs"warning reads "remove apiDocsFile()" even though a string was wired. That text comes from the runner's shared warning.meta gen --format json|toonwith apiDocsFile() wired and sees the skip reason in the result's warnings[]meta docs"meta gen --listapi-docs row namesmeta docsas its door and marks it skipped when wiredmeta docs; the json row carries door "meta docs"; it is marked "WIRED but skipped bymeta gen" when wiredmeta docsdraws the…meta verifysurfaces the doc-generator-in-gen advisory without failing the buildmeta docsmeta docsstill produces documentation after the changeEvidence: gen with apiDocsFile()/docsFile() in json, toon and text
Evidence: string specs, mermaid-er, clean control, verify advisory, gen --list
Evidence: mixed config still generates and warns; meta docs still works
Evidence: full TypeScript regression (ci-local --quick) log
Pipeline
Updates from git push no-mistakes
✅ **Intent** - passed
✅ No issues found.
✅ **Rebase** - passed
✅ No issues found.
server/typescript/packages/codegen-ts/src/packaged-docs-generators.ts:35- Wrong label when the skipped doc generator is wired as a stable-name string. Trace:generators: ["entity", "api-docs"]thenmeta gen --format json.normalizeConfigresolves the string to a generator namedapi-docs, the runner skips it (runner.ts:690), andwarnings[]now carries[api-docs] docs are produced by 'meta docs' (ADR-0025); remove apiDocsFile() from generators. Skipped.The config contains noapiDocsFile(); the entry to remove is"api-docs". The wording predates this change, but this change is what delivers it to the structured document an agent acts on, andmeta verifyalready names the string form correctly for the same config (doc-generator-advisory.ts:68,"api-docs" is listed under generators). Same class as the round-1 string-spec label fix; only this one site remains. Fix:resolveGeneratorsmaps specs 1:1, so in the runner loop readopts.config.generators[i], and when it is a string name the quoted string in the warning instead of the factory call. Keep the constructed-generator wording unchanged (pinned byrunner-docs-shim.test.ts).✅ **Test** - passed
✅ No issues found.
meta gen --format json|toonwith apiDocsFile() wired and sees the skip reason in the result's warnings[]meta docs"meta gen --listapi-docs row namesmeta docsas its door and marks it skipped when wiredmeta docs; the json row carries door "meta docs"; it is marked "WIRED but skipped bymeta gen" when wiredmeta docsdraws the…meta verifysurfaces the doc-generator-in-gen advisory without failing the buildmeta docsmeta docsstill produces documentation after the changescripts/ci-local.sh --only ts-fast --only ts-unit --strict-toolchainsbun bin/meta.ts gen --format json|toon|textin disposable projects wiringapiDocsFile()anddocsFile()meta genwith string specs"api-docs","docs","mermaid-er"and with a constructedmermaidErDiagram()meta genwith["entity", apiDocsFile()](mixed), thenmeta docson the same projectmeta genwith a clean["entity"]config (control)meta verify --format json|texton the api-docs and string-docsprojectsmeta gen --listtext and json for theapi-docsandmermaid-errowsscripts/ci-local.sh --quick --strict-toolchains(full TS regression: hygiene gates, ts build + typecheck, TypeScript conformance, ts unit suites, mutation gate, doc-template and embedded-library drift)✅ **Document** - passed
✅ No issues found.
✅ **Lint** - passed
✅ No issues found.
✅ **Push** - passed
✅ No issues found.